/*
 用1~9组成3个三位数abc，def和ghi，每个数字恰好使用一次，要求abc：def：ghi=1:2:3。
 输出所有的解。
 -----------------------------------------------------
 分析：从123遍历到987，在中间判断是否有符合1:2:3并且刚好使用了1~9的数。
 优化：因为最大值是987，所以基准值只要取123~329即可。
 */
package com.yuan.algorithms.Algorithm_1;

public class 整比排列数 {

    public static void main(String[] args) {
        //int[] arr = new int[1000];
        for (int i = 123; i <= 329; i++) {
            if (judge(i, i * 2, i * 3)) {
                System.out.println(i + " ," + i * 2 + " ," + i * 3);
            }
        }
    }

    //判断是否全部使用了1~9的数字
    public static boolean judge(int a, int b, int c) {
        int sum = 0;
        int[] test = new int[10];
        int S = a * 1000000 + b * 1000 + c;//合并三个数，简化操作
        for (int i = 0; i < 9; i++) {
            sum = S % 10;
            if (sum == 0) {  //只能使用1~9
                return false;
            }
            test[sum]++;
            if (test[sum] > 1) {
                return false;
            }
            S /= 10;
        }
        return true;
    }
}
